package com.rbac.modules.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.rbac.modules.system.dto.RoleDTO;
import com.rbac.modules.system.dto.RoleQuery;
import com.rbac.modules.system.entity.Role;
import java.util.List;

public interface RoleService {

    /**
     * 分页查询角色列表
     */
    Page<Role> page(RoleQuery query);

    /**
     * 创建角色
     */
    void create(RoleDTO roleDTO);

    /**
     * 更新角色
     */
    void update(RoleDTO roleDTO);

    /**
     * 删除角色
     */
    void delete(Long id);

    /**
     * 获取角色详情
     */
    Role getById(Long id);

    /**
     * 检查角色编码是否存在
     */
    boolean checkRoleCodeExists(String roleCode, Long excludeId);

    /**
     * 为角色分配用户
     * @param roleId 角色ID
     * @param userIds 用户ID列表
     */
    void assignUsers(Long roleId, List<Long> userIds);

    /**
     * 为角色分配权限
     * @param roleId 角色ID
     * @param permissionIds 权限ID列表
     */
    void assignPermissions(Long roleId, List<Long> permissionIds);

    /**
     * 获取角色的所有权限ID
     * @param roleId 角色ID
     * @return 权限ID列表
     */
    List<Long> getRolePermissions(Long roleId);

    /**
     * 获取角色的所有用户ID
     * @param roleId 角色ID
     * @return 用户ID列表
     */
    List<Long> getRoleUsers(Long roleId);
}
